package sicnu.cs.aps.domain.form;

import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.*;
import sicnu.cs.aps.common.util.CollectionUtil;
import sicnu.cs.aps.domain.dto.CollegeInfoDto;
import sicnu.cs.aps.domain.entity.ActivityRestriction;
import sicnu.cs.aps.domain.entity.Major;

import java.util.ArrayList;
import java.util.List;

/**
 * @author lucker
 * @date 2022/5/30 17:01
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
@With
@Builder
public class ActivityRestrictionForm {
    /**
     * 活动id
     */
    private Long id;

    /**
     * 学院及专业限制
     */
    private List<Integer> college;

    /**
     * 学院id限制
     */
    private List<Long> collegeIdList;

    /**
     * 专业id限制
     */
    private List<Long> majorIdList;

    /**
     * 年级限制
     */
    @JsonProperty("grade")
    private List<String> grade;
    /**
     * 地区限制
     */
    @JsonProperty("area")
    private List<String> area;
    /**
     * 性别限制
     */
    private Integer sex;
    /**
     * 小队人数上限
     */
    private Integer teamSize;
    /**
     * 报名活动小队数上限
     */
    @JsonProperty("teamNumber")
    private Integer teamNumber;

//    /**
//     * 将活动限制表单转为活动限制类,并将自动填充自身学院和专业List
//     * @return 活动限制类
//     */
//    public ActivityRestriction toActivityRestriction(){
//        for (CollegeInfoDto collegeInfoDto : this.college) {
//            this.collegeIdList.add(collegeInfoDto.getId());
//            List<Major> majorList = collegeInfoDto.getMajorList();
//            for (Major major : majorList) {
//                this.majorIdList.add(major.getId());
//            }
//        }
//        return ActivityRestriction.builder()
//                .id(this.getId())
//                .collegeIds(CollectionUtil.combineList(this.getCollegeIdList()))
//                .majorIds(CollectionUtil.combineList(this.getMajorIdList()))
//                .grades(CollectionUtil.combineList(this.getGrade()))
//                .area(CollectionUtil.combineList(this.getArea()))
//                .sex(this.getSex())
//                .teamSize(this.getTeamSize())
//                .activitySize(this.getTeamNumber())
//                .build();
//
//
//    }
}
